"""
亲和数

记d(n)为n的所有真因数（小于n且整除n的正整数）之和。如果d(a) = b且d(b) = a，且a ≠ b，那么a和b构成一个亲和数对，a和b被称为亲和数。
例如，220的真因数包括1、2、4、5、10、11、20、22、44、55和110，因此d(220) = 284。284的真因数包括1、2、4、71和142，因此d(284) = 220。
说明284和220是亲和数。
求所有小于10000的亲和数的和。
"""

def d(n):
    result=0
    for k in range(1,n):
        if(n%k==0):
            result+=k
    return result


a=set()
for i in range(1,10001):
    if d(d(i))==i and d(i)!=i:
        a.add(i)
        a.add(d(i))
print(sum(a))





# def fan_sum(number):#计算真因数的和
#     hu=[1]
#     for i in range(2,int(number**0.5)+1):
#         if number%i==0 and number>i:
#             hu.append(i)
#             if number!=i**2:
#                 hu.append(number/i)
#     return sum(f for f in hu)
# an_dict={}
# for i in range(1,10001):
#     an_dict[i]=fan_sum(i)#存储真因数和的字典

# fan=0
# for i in range(1,10001):    
#     try:
#         if an_dict[an_dict[i]]==i and an_dict[i]!=i:#寻找d[a]=b and d[b]= a
#             fan+=i
#     except KeyError:
#         pass
# print(fan)
# 答案：31626